package com.zby.admin.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zby.admin.pojo.Review;
import com.zby.admin.pojo.dto.ReviewDto;
import com.zby.admin.pojo.vo.ReviewVo;
import com.zby.utils.Result;

import java.util.List;

public interface ReviewService extends IService<Review> {
    
    /**
     * 发布留言
     * @param reviewDto 留言信息
     * @return Result<ReviewVo> 留言结果
     */
    Result<ReviewVo> addReview(ReviewDto reviewDto);
    
    /**
     * 获取留言列表（分页）
     * @param page 页码
     * @param pageSize 每页大小
     * @param productId 商品ID（可选）
     * @return 留言分页列表
     */
    Result<Page<ReviewVo>> getReviewList(Integer page, Integer pageSize, Long productId);
    
    /**
     * 删除留言
     * @param reviewId 留言ID
     * @return Result<Boolean> 删除结果
     */
    Result<Boolean> deleteReview(Long reviewId);
    
    /**
     * 根据ID获取留言详情
     * @param reviewId 留言ID
     * @return Result<ReviewVo> 留言详情
     */
    Result<ReviewVo> getReviewById(Long reviewId);
    
    /**
     * 更新留言
     * @param reviewId 留言ID
     * @param reviewDto 留言信息
     * @return Result<ReviewVo> 更新后的留言
     */
    Result<ReviewVo> updateReview(Long reviewId, ReviewDto reviewDto);
    
    /**
     * 获取指定留言的回复列表
     * @param parentId 父级留言ID
     * @param page 页码
     * @param pageSize 每页大小
     * @return 回复留言分页列表
     */
    Result<Page<ReviewVo>> getReplyList(Long parentId, Integer page, Integer pageSize);
    
    /**
     * 根据商品ID获取所有评论（不分页）
     * @param productId 商品ID
     * @return 该商品的所有评论列表
     */
    Result<List<ReviewVo>> getReviewsByProductId(Long productId);
}